home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Development / Interfaces / QD3DPascalInterfaces / QD3DGeometry.p < prev    next >
Encoding:
Text File  |  1996-11-15  |  32.3 KB  |  635 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGeometry.p
  3.  
  4.      Contains:    Generic geometry routines                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.0.6
  7.                  Release:    Universal Interfaces 2.1.5d1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DGeometry;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DGEOMETRY__}
  28. {$SETC __QD3DGEOMETRY__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DGeometryIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QD3DSET__}
  38. {$I QD3DSet.p}
  39. {$ENDC}
  40.  
  41. {$PUSH}
  42. {$ALIGN POWER}
  43. {$LibExport+}
  44.  
  45. {
  46. *****************************************************************************
  47.  **                                                                             **
  48.  **                                Geometry Routines                             **
  49.  **                                                                             **
  50.  ****************************************************************************
  51. }
  52. FUNCTION Q3Geometry_GetType(geometry: TQ3GeometryObject): TQ3ObjectType; C;
  53. FUNCTION Q3Geometry_GetAttributeSet(geometry: TQ3GeometryObject; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  54. FUNCTION Q3Geometry_SetAttributeSet(geometry: TQ3GeometryObject; attributeSet: TQ3AttributeSet): TQ3Status; C;
  55. FUNCTION Q3Geometry_Submit(geometry: TQ3GeometryObject; view: TQ3ViewObject): TQ3Status; C;
  56. {
  57. *****************************************************************************
  58.  **                                                                             **
  59.  **                            Box    Data Structure Definitions                     **
  60.  **                                                                             **
  61.  ****************************************************************************
  62. }
  63.  
  64. TYPE
  65.     TQ3AttributeSetArray                = ARRAY [0..5] OF TQ3AttributeSet;
  66.     TQ3AttributeSetArrayPtr                = ^TQ3AttributeSetArray;
  67.     TQ3BoxDataPtr = ^TQ3BoxData;
  68.     TQ3BoxData = RECORD
  69.         origin:                    TQ3Point3D;
  70.         orientation:            TQ3Vector3D;
  71.         majorAxis:                TQ3Vector3D;
  72.         minorAxis:                TQ3Vector3D;
  73.         faceAttributeSet:        TQ3AttributeSetArrayPtr;                {  Ordering : Left, right,      }
  74.                                                                         {               front, back,      }
  75.                                                                         {               top, bottom     }
  76.         boxAttributeSet:        TQ3AttributeSet;
  77.     END;
  78.  
  79. {
  80. *****************************************************************************
  81.  **                                                                             **
  82.  **                                Box Routines                                 **
  83.  **                                                                             **
  84.  ****************************************************************************
  85. }
  86. FUNCTION Q3Box_New({CONST}VAR boxData: TQ3BoxData): TQ3GeometryObject; C;
  87. FUNCTION Q3Box_Submit({CONST}VAR boxData: TQ3BoxData; view: TQ3ViewObject): TQ3Status; C;
  88. FUNCTION Q3Box_SetData(box: TQ3GeometryObject; {CONST}VAR boxData: TQ3BoxData): TQ3Status; C;
  89. FUNCTION Q3Box_GetData(box: TQ3GeometryObject; VAR boxData: TQ3BoxData): TQ3Status; C;
  90. FUNCTION Q3Box_EmptyData(VAR boxData: TQ3BoxData): TQ3Status; C;
  91. FUNCTION Q3Box_SetOrigin(box: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  92. FUNCTION Q3Box_SetOrientation(box: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  93. FUNCTION Q3Box_SetMajorAxis(box: TQ3GeometryObject; {CONST}VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  94. FUNCTION Q3Box_SetMinorAxis(box: TQ3GeometryObject; {CONST}VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  95. FUNCTION Q3Box_GetOrigin(box: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  96. FUNCTION Q3Box_GetOrientation(box: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  97. FUNCTION Q3Box_GetMajorAxis(box: TQ3GeometryObject; VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  98. FUNCTION Q3Box_GetMinorAxis(box: TQ3GeometryObject; VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  99. FUNCTION Q3Box_GetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: LONGINT; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  100. FUNCTION Q3Box_SetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: LONGINT; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  101. {
  102. *****************************************************************************
  103.  **                                                                             **
  104.  **                    General Polygon Data Structure Definitions                 **
  105.  **                                                                             **
  106.  ****************************************************************************
  107. }
  108.  
  109. TYPE
  110.     TQ3GeneralPolygonShapeHint     = LONGINT;
  111. CONST
  112.     kQ3GeneralPolygonShapeHintComplex = {TQ3GeneralPolygonShapeHint}0;
  113.     kQ3GeneralPolygonShapeHintConcave = {TQ3GeneralPolygonShapeHint}1;
  114.     kQ3GeneralPolygonShapeHintConvex = {TQ3GeneralPolygonShapeHint}2;
  115.  
  116.  
  117. TYPE
  118.     TQ3GeneralPolygonContourDataPtr = ^TQ3GeneralPolygonContourData;
  119.     TQ3GeneralPolygonContourData = RECORD
  120.         numVertices:            LONGINT;
  121.         vertices:                TQ3Vertex3DPtr;
  122.     END;
  123.  
  124.     TQ3GeneralPolygonDataPtr = ^TQ3GeneralPolygonData;
  125.     TQ3GeneralPolygonData = RECORD
  126.         numContours:            LONGINT;
  127.         contours:                TQ3GeneralPolygonContourDataPtr;
  128.         shapeHint:                TQ3GeneralPolygonShapeHint;
  129.         generalPolygonAttributeSet: TQ3AttributeSet;
  130.     END;
  131.  
  132. {
  133. *****************************************************************************
  134.  **                                                                             **
  135.  **                            General polygon Routines                         **
  136.  **                                                                             **
  137.  ****************************************************************************
  138. }
  139. FUNCTION Q3GeneralPolygon_New({CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3GeometryObject; C;
  140. FUNCTION Q3GeneralPolygon_Submit({CONST}VAR generalPolygonData: TQ3GeneralPolygonData; view: TQ3ViewObject): TQ3Status; C;
  141. FUNCTION Q3GeneralPolygon_SetData(generalPolygon: TQ3GeometryObject; {CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  142. FUNCTION Q3GeneralPolygon_GetData(polygon: TQ3GeometryObject; VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  143. FUNCTION Q3GeneralPolygon_EmptyData(VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  144. FUNCTION Q3GeneralPolygon_GetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  145. FUNCTION Q3GeneralPolygon_SetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  146. FUNCTION Q3GeneralPolygon_GetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  147. FUNCTION Q3GeneralPolygon_SetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: LONGINT; pointIndex: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  148. FUNCTION Q3GeneralPolygon_SetShapeHint(generalPolygon: TQ3GeometryObject; shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  149. FUNCTION Q3GeneralPolygon_GetShapeHint(generalPolygon: TQ3GeometryObject; VAR shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  150. {
  151. *****************************************************************************
  152.  **                                                                             **
  153.  **                        Line Data Structure Definitions                         **
  154.  **                                                                             **
  155.  ****************************************************************************
  156. }
  157.  
  158. TYPE
  159.     TQ3LineDataPtr = ^TQ3LineData;
  160.     TQ3LineData = RECORD
  161.         vertices:                ARRAY [0..1] OF TQ3Vertex3D;
  162.         lineAttributeSet:        TQ3AttributeSet;
  163.     END;
  164.  
  165. {
  166. *****************************************************************************
  167.  **                                                                             **
  168.  **                            Line Routines                                     **
  169.  **                                                                             **
  170.  ****************************************************************************
  171. }
  172. FUNCTION Q3Line_New({CONST}VAR lineData: TQ3LineData): TQ3GeometryObject; C;
  173. FUNCTION Q3Line_Submit({CONST}VAR lineData: TQ3LineData; view: TQ3ViewObject): TQ3Status; C;
  174. FUNCTION Q3Line_GetData(line: TQ3GeometryObject; VAR lineData: TQ3LineData): TQ3Status; C;
  175. FUNCTION Q3Line_SetData(line: TQ3GeometryObject; {CONST}VAR lineData: TQ3LineData): TQ3Status; C;
  176. FUNCTION Q3Line_GetVertexPosition(line: TQ3GeometryObject; index: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  177. FUNCTION Q3Line_SetVertexPosition(line: TQ3GeometryObject; index: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  178. FUNCTION Q3Line_GetVertexAttributeSet(line: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  179. FUNCTION Q3Line_SetVertexAttributeSet(line: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  180. FUNCTION Q3Line_EmptyData(VAR lineData: TQ3LineData): TQ3Status; C;
  181. {
  182. *****************************************************************************
  183.  **                                                                             **
  184.  **                        Marker Data Structure Definitions                     **
  185.  **                                                                             **
  186.  ****************************************************************************
  187. }
  188.  
  189. TYPE
  190.     TQ3MarkerDataPtr = ^TQ3MarkerData;
  191.     TQ3MarkerData = RECORD
  192.         location:                TQ3Point3D;
  193.         xOffset:                LONGINT;
  194.         yOffset:                LONGINT;
  195.         bitmap:                    TQ3Bitmap;
  196.         markerAttributeSet:        TQ3AttributeSet;
  197.     END;
  198.  
  199. {
  200. *****************************************************************************
  201.  **                                                                             **
  202.  **                                Marker Routines                                 **
  203.  **                                                                             **
  204.  ****************************************************************************
  205. }
  206. FUNCTION Q3Marker_New({CONST}VAR markerData: TQ3MarkerData): TQ3GeometryObject; C;
  207. FUNCTION Q3Marker_Submit({CONST}VAR markerData: TQ3MarkerData; view: TQ3ViewObject): TQ3Status; C;
  208. FUNCTION Q3Marker_SetData(geometry: TQ3GeometryObject; {CONST}VAR markerData: TQ3MarkerData): TQ3Status; C;
  209. FUNCTION Q3Marker_GetData(geometry: TQ3GeometryObject; VAR markerData: TQ3MarkerData): TQ3Status; C;
  210. FUNCTION Q3Marker_EmptyData(VAR markerData: TQ3MarkerData): TQ3Status; C;
  211. FUNCTION Q3Marker_GetPosition(marker: TQ3GeometryObject; VAR location: TQ3Point3D): TQ3Status; C;
  212. FUNCTION Q3Marker_SetPosition(marker: TQ3GeometryObject; {CONST}VAR location: TQ3Point3D): TQ3Status; C;
  213. FUNCTION Q3Marker_GetXOffset(marker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  214. FUNCTION Q3Marker_SetXOffset(marker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  215. FUNCTION Q3Marker_GetYOffset(marker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  216. FUNCTION Q3Marker_SetYOffset(marker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  217. FUNCTION Q3Marker_GetBitmap(marker: TQ3GeometryObject; VAR bitmap: TQ3Bitmap): TQ3Status; C;
  218. FUNCTION Q3Marker_SetBitmap(marker: TQ3GeometryObject; {CONST}VAR bitmap: TQ3Bitmap): TQ3Status; C;
  219. {
  220. *****************************************************************************
  221.  **                                                                             **
  222.  **                        Mesh Data Structure Definitions                         **
  223.  **                                                                             **
  224.  ****************************************************************************
  225. }
  226.  
  227. TYPE
  228.     TQ3MeshComponent = ^LONGINT;
  229.     TQ3MeshVertex = ^LONGINT;
  230.     TQ3MeshFace = ^LONGINT;
  231.     TQ3MeshEdge = ^LONGINT;
  232.     TQ3MeshContour = ^LONGINT;
  233. {
  234. *****************************************************************************
  235.  **                                                                             **
  236.  **                            Mesh Routines                                      **
  237.  **                                                                             **
  238.  ****************************************************************************
  239. }
  240. {
  241.  *  Constructors
  242. }
  243. FUNCTION Q3Mesh_New: TQ3GeometryObject; C;
  244. FUNCTION Q3Mesh_VertexNew(mesh: TQ3GeometryObject; {CONST}VAR vertex: TQ3Vertex3D): TQ3MeshVertex; C;
  245. FUNCTION Q3Mesh_FaceNew(mesh: TQ3GeometryObject; numVertices: LONGINT; {CONST}VAR vertices: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3MeshFace; C;
  246. {
  247.  *  Destructors
  248. }
  249. FUNCTION Q3Mesh_VertexDelete(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex): TQ3Status; C;
  250. FUNCTION Q3Mesh_FaceDelete(mesh: TQ3GeometryObject; face: TQ3MeshFace): TQ3Status; C;
  251. {
  252.  * Methods
  253. }
  254. FUNCTION Q3Mesh_DelayUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  255. FUNCTION Q3Mesh_ResumeUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  256. FUNCTION Q3Mesh_FaceToContour(mesh: TQ3GeometryObject; containerFace: TQ3MeshFace; face: TQ3MeshFace): TQ3MeshContour; C;
  257. FUNCTION Q3Mesh_ContourToFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour): TQ3MeshFace; C;
  258. {
  259.  * Mesh
  260. }
  261. FUNCTION Q3Mesh_GetNumComponents(mesh: TQ3GeometryObject; VAR numComponents: LONGINT): TQ3Status; C;
  262. FUNCTION Q3Mesh_GetNumEdges(mesh: TQ3GeometryObject; VAR numEdges: LONGINT): TQ3Status; C;
  263. FUNCTION Q3Mesh_GetNumVertices(mesh: TQ3GeometryObject; VAR numVertices: LONGINT): TQ3Status; C;
  264. FUNCTION Q3Mesh_GetNumFaces(mesh: TQ3GeometryObject; VAR numFaces: LONGINT): TQ3Status; C;
  265. FUNCTION Q3Mesh_GetNumCorners(mesh: TQ3GeometryObject; VAR numCorners: LONGINT): TQ3Status; C;
  266. FUNCTION Q3Mesh_GetOrientable(mesh: TQ3GeometryObject; VAR orientable: TQ3Boolean): TQ3Status; C;
  267. {
  268.  * Component
  269. }
  270. FUNCTION Q3Mesh_GetComponentNumVertices(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numVertices: LONGINT): TQ3Status; C;
  271. FUNCTION Q3Mesh_GetComponentNumEdges(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numEdges: LONGINT): TQ3Status; C;
  272. FUNCTION Q3Mesh_GetComponentBoundingBox(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR boundingBox: TQ3BoundingBox): TQ3Status; C;
  273. FUNCTION Q3Mesh_GetComponentOrientable(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR orientable: TQ3Boolean): TQ3Status; C;
  274. {
  275.  * Vertex
  276. }
  277. FUNCTION Q3Mesh_GetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR coordinates: TQ3Point3D): TQ3Status; C;
  278. FUNCTION Q3Mesh_GetVertexIndex(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR index: LONGINT): TQ3Status; C;
  279. FUNCTION Q3Mesh_GetVertexOnBoundary(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  280. FUNCTION Q3Mesh_GetVertexComponent(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR component: TQ3MeshComponent): TQ3Status; C;
  281. FUNCTION Q3Mesh_GetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  282. FUNCTION Q3Mesh_SetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; {CONST}VAR coordinates: TQ3Point3D): TQ3Status; C;
  283. FUNCTION Q3Mesh_SetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3Status; C;
  284. {
  285.  * Face
  286. }
  287. FUNCTION Q3Mesh_GetFaceNumVertices(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numVertices: LONGINT): TQ3Status; C;
  288. FUNCTION Q3Mesh_GetFacePlaneEquation(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR planeEquation: TQ3PlaneEquation): TQ3Status; C;
  289. FUNCTION Q3Mesh_GetFaceNumContours(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numContours: LONGINT): TQ3Status; C;
  290. FUNCTION Q3Mesh_GetFaceIndex(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR index: LONGINT): TQ3Status; C;
  291. FUNCTION Q3Mesh_GetFaceComponent(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR component: TQ3MeshComponent): TQ3Status; C;
  292. FUNCTION Q3Mesh_GetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  293. FUNCTION Q3Mesh_SetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  294. {
  295.  * Edge
  296. }
  297. FUNCTION Q3Mesh_GetEdgeVertices(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR vertex1: TQ3MeshVertex; VAR vertex2: TQ3MeshVertex): TQ3Status; C;
  298. FUNCTION Q3Mesh_GetEdgeFaces(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR face1: TQ3MeshFace; VAR face2: TQ3MeshFace): TQ3Status; C;
  299. FUNCTION Q3Mesh_GetEdgeOnBoundary(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  300. FUNCTION Q3Mesh_GetEdgeComponent(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR component: TQ3MeshComponent): TQ3Status; C;
  301. FUNCTION Q3Mesh_GetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  302. FUNCTION Q3Mesh_SetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; attributeSet: TQ3AttributeSet): TQ3Status; C;
  303. {
  304.  * Contour
  305. }
  306. FUNCTION Q3Mesh_GetContourFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR face: TQ3MeshFace): TQ3Status; C;
  307. FUNCTION Q3Mesh_GetContourNumVertices(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR numVertices: LONGINT): TQ3Status; C;
  308. {
  309.  * Corner
  310. }
  311. FUNCTION Q3Mesh_GetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  312. FUNCTION Q3Mesh_SetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  313. {
  314.  * Public Mesh Iterators
  315. }
  316.  
  317. TYPE
  318.     TQ3MeshIteratorPtr = ^TQ3MeshIterator;
  319.     TQ3MeshIterator = RECORD
  320.         var1:                    Ptr;
  321.         var2:                    Ptr;
  322.         var3:                    Ptr;
  323.         field1:                    Ptr;
  324.         field2:                    PACKED ARRAY [0..3] OF CHAR;
  325.     END;
  326.  
  327. FUNCTION Q3Mesh_FirstMeshComponent(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  328. FUNCTION Q3Mesh_NextMeshComponent(VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  329. FUNCTION Q3Mesh_FirstComponentVertex(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  330. FUNCTION Q3Mesh_NextComponentVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  331. FUNCTION Q3Mesh_FirstComponentEdge(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  332. FUNCTION Q3Mesh_NextComponentEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  333. FUNCTION Q3Mesh_FirstMeshVertex(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  334. FUNCTION Q3Mesh_NextMeshVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  335. FUNCTION Q3Mesh_FirstMeshFace(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  336. FUNCTION Q3Mesh_NextMeshFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  337. FUNCTION Q3Mesh_FirstMeshEdge(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  338. FUNCTION Q3Mesh_NextMeshEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  339. FUNCTION Q3Mesh_FirstVertexEdge(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  340. FUNCTION Q3Mesh_NextVertexEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  341. FUNCTION Q3Mesh_FirstVertexVertex(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  342. FUNCTION Q3Mesh_NextVertexVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  343. FUNCTION Q3Mesh_FirstVertexFace(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  344. FUNCTION Q3Mesh_NextVertexFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  345. FUNCTION Q3Mesh_FirstFaceEdge(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  346. FUNCTION Q3Mesh_NextFaceEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  347. FUNCTION Q3Mesh_FirstFaceVertex(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  348. FUNCTION Q3Mesh_NextFaceVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  349. FUNCTION Q3Mesh_FirstFaceFace(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  350. FUNCTION Q3Mesh_NextFaceFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  351. FUNCTION Q3Mesh_FirstFaceContour(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  352. FUNCTION Q3Mesh_NextFaceContour(VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  353. FUNCTION Q3Mesh_FirstContourEdge(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  354. FUNCTION Q3Mesh_NextContourEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  355. FUNCTION Q3Mesh_FirstContourVertex(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  356. FUNCTION Q3Mesh_NextContourVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  357. FUNCTION Q3Mesh_FirstContourFace(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  358. FUNCTION Q3Mesh_NextContourFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  359. {
  360. *****************************************************************************
  361.  **                                                                             **
  362.  **                            Maximum order for NURB Curves                     **
  363.  **                                                                             **
  364.  ****************************************************************************
  365. }
  366. {
  367. *****************************************************************************
  368.  **                                                                             **
  369.  **                            Data Structure Definitions                         **
  370.  **                                                                             **
  371.  ****************************************************************************
  372. }
  373.  
  374. TYPE
  375.     TQ3NURBCurveDataPtr = ^TQ3NURBCurveData;
  376.     TQ3NURBCurveData = RECORD
  377.         order:                    LONGINT;
  378.         numPoints:                LONGINT;
  379.         controlPoints:            TQ3RationalPoint4DPtr;
  380.         knots:                    ^Single;
  381.         curveAttributeSet:        TQ3AttributeSet;
  382.     END;
  383.  
  384. {
  385. *****************************************************************************
  386.  **                                                                             **
  387.  **                                NURB Curve Routines                             **
  388.  **                                                                             **
  389.  ****************************************************************************
  390. }
  391. FUNCTION Q3NURBCurve_New({CONST}VAR curveData: TQ3NURBCurveData): TQ3GeometryObject; C;
  392. FUNCTION Q3NURBCurve_Submit({CONST}VAR curveData: TQ3NURBCurveData; view: TQ3ViewObject): TQ3Status; C;
  393. FUNCTION Q3NURBCurve_SetData(curve: TQ3GeometryObject; {CONST}VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  394. FUNCTION Q3NURBCurve_GetData(curve: TQ3GeometryObject; VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  395. FUNCTION Q3NURBCurve_EmptyData(VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  396. FUNCTION Q3NURBCurve_SetControlPoint(curve: TQ3GeometryObject; pointIndex: LONGINT; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  397. FUNCTION Q3NURBCurve_GetControlPoint(curve: TQ3GeometryObject; pointIndex: LONGINT; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  398. FUNCTION Q3NURBCurve_SetKnot(curve: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  399. FUNCTION Q3NURBCurve_GetKnot(curve: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  400. {
  401. *****************************************************************************
  402.  **                                                                             **
  403.  **                            Maximum NURB Patch Order                         **
  404.  **                                                                             **
  405.  ****************************************************************************
  406. }
  407. {
  408. *****************************************************************************
  409.  **                                                                             **
  410.  **                        NURB Patch Data Structure Definitions                 **
  411.  **                                                                             **
  412.  ****************************************************************************
  413. }
  414.  
  415. TYPE
  416.     TQ3NURBPatchTrimCurveDataPtr = ^TQ3NURBPatchTrimCurveData;
  417.     TQ3NURBPatchTrimCurveData = RECORD
  418.         order:                    LONGINT;
  419.         numPoints:                LONGINT;
  420.         controlPoints:            TQ3RationalPoint3DPtr;
  421.         knots:                    ^Single;
  422.     END;
  423.  
  424.     TQ3NURBPatchTrimLoopDataPtr = ^TQ3NURBPatchTrimLoopData;
  425.     TQ3NURBPatchTrimLoopData = RECORD
  426.         numTrimCurves:            LONGINT;
  427.         trimCurves:                TQ3NURBPatchTrimCurveDataPtr;
  428.     END;
  429.  
  430.     TQ3NURBPatchDataPtr = ^TQ3NURBPatchData;
  431.     TQ3NURBPatchData = RECORD
  432.         uOrder:                    LONGINT;
  433.         vOrder:                    LONGINT;
  434.         numRows:                LONGINT;
  435.         numColumns:                LONGINT;
  436.         controlPoints:            TQ3RationalPoint4DPtr;
  437.         uKnots:                    ^Single;
  438.         vKnots:                    ^Single;
  439.         numTrimLoops:            LONGINT;
  440.         trimLoops:                TQ3NURBPatchTrimLoopDataPtr;
  441.         patchAttributeSet:        TQ3AttributeSet;
  442.     END;
  443.  
  444. {
  445. *****************************************************************************
  446.  **                                                                             **
  447.  **                                NURB Patch Routines                             **
  448.  **                                                                             **
  449.  ****************************************************************************
  450. }
  451. FUNCTION Q3NURBPatch_New({CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3GeometryObject; C;
  452. FUNCTION Q3NURBPatch_Submit({CONST}VAR nurbPatchData: TQ3NURBPatchData; view: TQ3ViewObject): TQ3Status; C;
  453. FUNCTION Q3NURBPatch_SetData(nurbPatch: TQ3GeometryObject; {CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  454. FUNCTION Q3NURBPatch_GetData(nurbPatch: TQ3GeometryObject; VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  455. FUNCTION Q3NURBPatch_SetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  456. FUNCTION Q3NURBPatch_GetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  457. FUNCTION Q3NURBPatch_SetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  458. FUNCTION Q3NURBPatch_SetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; knotValue: Single): TQ3Status; C;
  459. FUNCTION Q3NURBPatch_GetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  460. FUNCTION Q3NURBPatch_GetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: LONGINT; VAR knotValue: Single): TQ3Status; C;
  461. FUNCTION Q3NURBPatch_EmptyData(VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  462. {
  463. *****************************************************************************
  464.  **                                                                             **
  465.  **                        Point Data Structure Definitions                     **
  466.  **                                                                             **
  467.  ****************************************************************************
  468. }
  469.  
  470. TYPE
  471.     TQ3PointDataPtr = ^TQ3PointData;
  472.     TQ3PointData = RECORD
  473.         point:                    TQ3Point3D;
  474.         pointAttributeSet:        TQ3AttributeSet;
  475.     END;
  476.  
  477. {
  478. *****************************************************************************
  479.  **                                                                             **
  480.  **                                Point Routines                                 **
  481.  **                                                                             **
  482.  ****************************************************************************
  483. }
  484. FUNCTION Q3Point_New({CONST}VAR pointData: TQ3PointData): TQ3GeometryObject; C;
  485. FUNCTION Q3Point_Submit({CONST}VAR pointData: TQ3PointData; view: TQ3ViewObject): TQ3Status; C;
  486. FUNCTION Q3Point_GetData(point: TQ3GeometryObject; VAR pointData: TQ3PointData): TQ3Status; C;
  487. FUNCTION Q3Point_SetData(point: TQ3GeometryObject; {CONST}VAR pointData: TQ3PointData): TQ3Status; C;
  488. FUNCTION Q3Point_EmptyData(VAR pointData: TQ3PointData): TQ3Status; C;
  489. FUNCTION Q3Point_SetPosition(point: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  490. FUNCTION Q3Point_GetPosition(point: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  491. {
  492. *****************************************************************************
  493.  **                                                                             **
  494.  **                        Polygon Data Structure Definitions                     **
  495.  **                                                                             **
  496.  ****************************************************************************
  497. }
  498.  
  499. TYPE
  500.     TQ3PolygonDataPtr = ^TQ3PolygonData;
  501.     TQ3PolygonData = RECORD
  502.         numVertices:            LONGINT;
  503.         vertices:                TQ3Vertex3DPtr;
  504.         polygonAttributeSet:    TQ3AttributeSet;
  505.     END;
  506.  
  507. {
  508. *****************************************************************************
  509.  **                                                                             **
  510.  **                            Polygon Routines                                 **
  511.  **                                                                             **
  512.  ****************************************************************************
  513. }
  514. FUNCTION Q3Polygon_New({CONST}VAR polygonData: TQ3PolygonData): TQ3GeometryObject; C;
  515. FUNCTION Q3Polygon_Submit({CONST}VAR polygonData: TQ3PolygonData; view: TQ3ViewObject): TQ3Status; C;
  516. FUNCTION Q3Polygon_SetData(polygon: TQ3GeometryObject; {CONST}VAR polygonData: TQ3PolygonData): TQ3Status; C;
  517. FUNCTION Q3Polygon_GetData(polygon: TQ3GeometryObject; VAR polygonData: TQ3PolygonData): TQ3Status; C;
  518. FUNCTION Q3Polygon_EmptyData(VAR polygonData: TQ3PolygonData): TQ3Status; C;
  519. FUNCTION Q3Polygon_GetVertexPosition(polygon: TQ3GeometryObject; index: LONGINT; VAR point: TQ3Point3D): TQ3Status; C;
  520. FUNCTION Q3Polygon_SetVertexPosition(polygon: TQ3GeometryObject; index: LONGINT; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  521. FUNCTION Q3Polygon_GetVertexAttributeSet(polygon: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  522. FUNCTION Q3Polygon_SetVertexAttributeSet(polygon: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  523. {
  524. *****************************************************************************
  525.  **                                                                             **
  526.  **                        PolyLine Data Structure Definitions                     **
  527.  **                                                                             **
  528.  ****************************************************************************
  529. }
  530.  
  531. TYPE
  532.     TQ3PolyLineDataPtr = ^TQ3PolyLineData;
  533.     TQ3PolyLineData = RECORD
  534.         numVertices:            LONGINT;
  535.         vertices:                TQ3Vertex3DPtr;
  536.         segmentAttributeSet:    TQ3AttributeSetPtr;
  537.         polyLineAttributeSet:    TQ3AttributeSet;
  538.     END;
  539.  
  540. {
  541. *****************************************************************************
  542.  **                                                                             **
  543.  **                            PolyLine Routines                                 **
  544.  **                                                                             **
  545.  ****************************************************************************
  546. }
  547. FUNCTION Q3PolyLine_New({CONST}VAR polylineData: TQ3PolyLineData): TQ3GeometryObject; C;
  548. FUNCTION Q3PolyLine_Submit({CONST}VAR polyLineData: TQ3PolyLineData; view: TQ3ViewObject): TQ3Status; C;
  549. FUNCTION Q3PolyLine_SetData(polyLine: TQ3GeometryObject; {CONST}VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  550. FUNCTION Q3PolyLine_GetData(polyLine: TQ3GeometryObject; VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  551. FUNCTION Q3PolyLine_EmptyData(VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  552. FUNCTION Q3PolyLine_GetVertexPosition(polyLine: TQ3GeometryObject; index: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  553. FUNCTION Q3PolyLine_SetVertexPosition(polyLine: TQ3GeometryObject; index: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  554. FUNCTION Q3PolyLine_GetVertexAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  555. FUNCTION Q3PolyLine_SetVertexAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  556. FUNCTION Q3PolyLine_GetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  557. FUNCTION Q3PolyLine_SetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  558. {
  559. *****************************************************************************
  560.  **                                                                             **
  561.  **                        Triangle Data Structure Definitions                     **
  562.  **                                                                             **
  563.  ****************************************************************************
  564. }
  565.  
  566. TYPE
  567.     TQ3TriangleDataPtr = ^TQ3TriangleData;
  568.     TQ3TriangleData = RECORD
  569.         vertices:                ARRAY [0..2] OF TQ3Vertex3D;
  570.         triangleAttributeSet:    TQ3AttributeSet;
  571.     END;
  572.  
  573. {
  574. *****************************************************************************
  575.  **                                                                             **
  576.  **                            Triangle Routines                                 **
  577.  **                                                                             **
  578.  ****************************************************************************
  579. }
  580. FUNCTION Q3Triangle_New({CONST}VAR triangleData: TQ3TriangleData): TQ3GeometryObject; C;
  581. FUNCTION Q3Triangle_Submit({CONST}VAR triangleData: TQ3TriangleData; view: TQ3ViewObject): TQ3Status; C;
  582. FUNCTION Q3Triangle_SetData(triangle: TQ3GeometryObject; {CONST}VAR triangleData: TQ3TriangleData): TQ3Status; C;
  583. FUNCTION Q3Triangle_GetData(triangle: TQ3GeometryObject; VAR triangleData: TQ3TriangleData): TQ3Status; C;
  584. FUNCTION Q3Triangle_EmptyData(VAR triangleData: TQ3TriangleData): TQ3Status; C;
  585. FUNCTION Q3Triangle_GetVertexPosition(triangle: TQ3GeometryObject; index: LONGINT; VAR point: TQ3Point3D): TQ3Status; C;
  586. FUNCTION Q3Triangle_SetVertexPosition(triangle: TQ3GeometryObject; index: LONGINT; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  587. FUNCTION Q3Triangle_GetVertexAttributeSet(triangle: TQ3GeometryObject; index: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  588. FUNCTION Q3Triangle_SetVertexAttributeSet(triangle: TQ3GeometryObject; index: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  589. {
  590. *****************************************************************************
  591.  **                                                                             **
  592.  **                        TriGrid Data Structure Definitions                     **
  593.  **                                                                             **
  594.  ****************************************************************************
  595. }
  596.  
  597. TYPE
  598.     TQ3TriGridDataPtr = ^TQ3TriGridData;
  599.     TQ3TriGridData = RECORD
  600.         numRows:                LONGINT;
  601.         numColumns:                LONGINT;
  602.         vertices:                TQ3Vertex3DPtr;
  603.         facetAttributeSet:        TQ3AttributeSetPtr;
  604.         triGridAttributeSet:    TQ3AttributeSet;
  605.     END;
  606.  
  607. {
  608. *****************************************************************************
  609.  **                                                                             **
  610.  **                                TriGrid Routines                             **
  611.  **                                                                             **
  612.  ****************************************************************************
  613. }
  614. FUNCTION Q3TriGrid_New({CONST}VAR triGridData: TQ3TriGridData): TQ3GeometryObject; C;
  615. FUNCTION Q3TriGrid_Submit({CONST}VAR triGridData: TQ3TriGridData; view: TQ3ViewObject): TQ3Status; C;
  616. FUNCTION Q3TriGrid_SetData(triGrid: TQ3GeometryObject; {CONST}VAR triGridData: TQ3TriGridData): TQ3Status; C;
  617. FUNCTION Q3TriGrid_GetData(triGrid: TQ3GeometryObject; VAR triGridData: TQ3TriGridData): TQ3Status; C;
  618. FUNCTION Q3TriGrid_EmptyData(VAR triGridData: TQ3TriGridData): TQ3Status; C;
  619. FUNCTION Q3TriGrid_GetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR position: TQ3Point3D): TQ3Status; C;
  620. FUNCTION Q3TriGrid_SetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  621. FUNCTION Q3TriGrid_GetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  622. FUNCTION Q3TriGrid_SetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: LONGINT; columnIndex: LONGINT; attributeSet: TQ3AttributeSet): TQ3Status; C;
  623. FUNCTION Q3TriGrid_GetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: LONGINT; VAR facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  624. FUNCTION Q3TriGrid_SetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: LONGINT; facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  625. {$ALIGN RESET}
  626. {$POP}
  627.  
  628. {$SETC UsingIncludes := QD3DGeometryIncludes}
  629.  
  630. {$ENDC} {__QD3DGEOMETRY__}
  631.  
  632. {$IFC NOT UsingIncludes}
  633.  END.
  634. {$ENDC}
  635.